library(tidyverse)
library(sf)
library(leaflet)
library(leaflet.extras)
library(leafem)
library(ggplot2)
library(plotly)Riqueza de especies de arácnidos en áreas silvestres protegidas de Costa Rica
Presentación
Este documento muestra la riqueza de especies de arácnidos (clase Arachnida) en áreas silvestres protegidas (ASP) de Costa Rica
Fuentes de datos:
- Registros de presencia de arácnidos: Consulta al sistema mundial de información de biodiversidad (GBIF)
- Polígonos de ASP: servicio WFS del Sistema Nacional de Áreas de Conservación (SINAC)
Carga de paquetes
Carga de datos
Áreas silvestres protegidas
asp <-
st_read("asp.gpkg", quiet = TRUE) |>
st_transform(4326) |>
st_make_valid()
plot(asp$geom)
Registros de presencia de arácnidos
aracnidos <-
st_read(
"aracnidos.csv",
options = c(
"X_POSSIBLE_NAMES=decimalLongitude",
# columna de longitud decimal
"Y_POSSIBLE_NAMES=decimalLatitude" # columna de latitud decimal
),
quiet = TRUE
)
# Asignación del CRS WGS84
st_crs(aracnidos) <- 4326Visualización de datos
Cantidad de registros de presencia por especie
registros_aracnidos_x_especie <-
aracnidos |>
st_drop_geometry() |>
group_by(species) |>
summarise(cantidad_registros = n()) |> #n cuenta
filter(species != "")
grafico_ggplot2 <-
registros_aracnidos_x_especie |>
arrange(desc(cantidad_registros)) |>
slice(1:10) |>
ggplot(aes(x = reorder(species, cantidad_registros), y = cantidad_registros)) +
geom_col() +
coord_flip() +
xlab("Especies de arácnidos") +
ylab("Cantidad de especies") +
theme_classic()
ggplotly(grafico_ggplot2) |> config(locale = "es")Mapa de distribución de la especie Centruroides limbatus
centruroides_limbatus <-
aracnidos |>
filter(species == "Centruroides limbatus")leaflet() |>
setView(
lng = -84.19452,
lat = 9.572735,
zoom = 7) |>
addProviderTiles(provider = providers$CartoDB.Positron, group = "Mapa base") |>
addPolygons(
data = asp,
color = "darkgreen",
stroke = TRUE,
weight = 1.5,
group = "ASP"
) |>
addCircleMarkers(
data = centruroides_limbatus,
color = "brown",
radius = 3,
stroke = TRUE,
group = "Centruroides limbatus"
) |>
addLayersControl(
baseGroups = c("Carto Positron"),
overlayGroups = c("ASP", "Centruroides limbatus")
)Mapa de riqueza de especies de arácnidos en ASP
- Unión espacial de arácnidos y ASP
aracnidos_union_asp <-
st_join(
x = aracnidos,
y = dplyr::select(asp, codigo),
join = st_within
)- Conteo de la cantidad de especies de arácnidos en cada ASP
riqueza_especies_aracnidos_asp <-
aracnidos_union_asp |>
st_drop_geometry() |>
group_by(codigo) |>
summarise(riqueza_especies_aracnidos = n_distinct(species, na.rm = TRUE))- Unión de geometrías de ASP con dataframe de riqueza de especies
asp_union_riqueza <-
left_join(
x = asp,
y = dplyr::select(riqueza_especies_aracnidos_asp, codigo, riqueza_especies_aracnidos),
by = "codigo",
) |>
replace_na(list(riqueza_especies_aracnidos_asp = 0))- Mapa de riqueza de especies
# Paleta de colores de riqueza de especies
colores_riqueza_especies <-
colorNumeric(
palette = "Reds",
domain = asp_union_riqueza$riqueza_especies_aracnidos,
na.color = "transparent"
)
# Mapa leaflet
leaflet() |>
setView(
lng = -84.19452,
lat = 9.572735,
zoom = 7) |>
addTiles(group = "Mapa general (OpenStreetMap)") |>
addProviderTiles(
providers$Esri.WorldImagery,
group = "Imágenes satelitales (ESRI World Imagery)"
) |>
addPolygons(
data = asp_union_riqueza,
fillColor = ~ colores_riqueza_especies(asp_union_riqueza$riqueza_especies_aracnidos),
fillOpacity = 0.8,
color = "black",
stroke = TRUE,
weight = 1.0,
popup = paste(
paste("<strong>ASP:</strong>", asp_union_riqueza$nombre_asp),
paste("<strong>Riqueza de especies:</strong>", asp_union_riqueza$riqueza_especies_aracnidos),
sep = '<br/>'
),
group = "Riqueza de especies"
) |>
addScaleBar(
position = "bottomleft",
options = scaleBarOptions(imperial = FALSE)
) |>
addLegend(
position = "bottomleft",
pal = colores_riqueza_especies,
values = asp_union_riqueza$riqueza_especies_aracnidos,
group = "Riqueza de especies",
title = "Riqueza de especies"
) |>
addCircleMarkers(
data = aracnidos,
stroke = F,
radius = 4,
fillColor = "black",
fillOpacity = 1.0,
popup = paste(
paste0("<strong>Especie: </strong>", aracnidos$species),
paste0("<strong>Localidad: </strong>", aracnidos$locality),
paste0("<strong>Fecha: </strong>", aracnidos$eventDate),
paste0("<strong>Fuente: </strong>", aracnidos$institutionCode),
paste0("<a href='", aracnidos$occurrenceID, "'>Más información</a>"),
sep = '<br/>'
),
group = "Registros de presencia"
) |>
addLayersControl(
baseGroups = c(
"Mapa general (OpenStreetMap)",
"Imágenes satelitales (ESRI World Imagery)"
),
overlayGroups = c(
"Riqueza de especies",
"Registros de presencia"
)
) |>
addResetMapButton() |>
addSearchOSM() |>
addMouseCoordinates() |>
addFullscreenControl() |>
hideGroup("Registros de presencia")